package com.nicolas.pattern.facade;

/**
 * Facade（外观角色）：在客户端可以调用它的方法，在外观角色中可以知道相关的（一个或者多个）
 * 子系统的功能和责任；在正常情况下，它将所有从客户端发来的请求委派到相应的子系统去，
 * 传递给相应的子系统对象处理。
 * @author nicolas  2017年2月12日 -- 上午11:15:26
 */
public class EncryptFacade extends AbstractEncryptFacade {
	 //维持对其他对象的引用  
    private FileReader reader;  
   private CipherMachine cipher;  
   private FileWriter writer;  

   public EncryptFacade()  
   {  
       reader = new FileReader();  
       cipher = new CipherMachine();  
       writer = new FileWriter();  
   }  

   //调用其他对象的业务方法  
    public void FileEncrypt(String fileNameSrc, String fileNameDes)  
   {  
       String plainStr = reader.Read(fileNameSrc);  
       String encryptStr = cipher.Encrypt(plainStr);  
       writer.Write(encryptStr, fileNameDes);  
   }  
}
